/**
 * TetisDB
 *
 * Classe de manutencao escrita/leitura de arquivos de configuracao.
 */

package br.com.tetisdb.io.domainConfig;

import br.com.tetisdb.lang.TetisObject;
import java.io.File;

import br.com.tetisdb.configure.TetisConfigureDomain;
import br.com.tetisdb.domain.TetisDomain;

public class ConfigIOManager extends TetisObject {
    //objeto de escrita de configuracoes
    private static ConfigIOWriter writer;
    //objeto de leitura de configuracoes
    private static ConfigIOReader reader;
    //path de configuracao    
    protected static String pathConfig;
    //nome da configuracao
    protected static String nameConfig;    
    protected static final String NIVELLOG = "nivelLog";    
    protected static final String NAMEDOMAIN = "nameDomain";    
    protected static final String TIMESNAPSHOT = "timeSnapShot";
    
    static {
        writer = new ConfigIOWriter();
        reader = new ConfigIOReader();
    }
    
    private ConfigIOManager() {
    }
    
    /**
     * Metodo que escreve a configuracao de um TetisDomain.
     *
     * @param domain TetisDomain com a configuracao que se deve escrever em arquivo.
     */
    public static boolean writeConfigure(TetisDomain domain) {
        setVariables(domain);
        return writer.setConfigureDomain(domain);
    }
    
    /**
     * Resgata a configuracao de um determinado TetisDomain do arquivo.
     *
     * @param domain TetisDomain que deve ser resgatada a configuracao.
     * @return TetisConfigureDomain Configuracao do TetisDomain passado.
     */
    public static TetisConfigureDomain getConfigureDomain(TetisDomain domain) {
        setVariables(domain);
        return reader.getConfigureDomain(domain);
    }
        
    private static void setVariables(TetisDomain domain) {
        pathConfig = domain.getCompleteConfigPath() + File.separator;
        nameConfig = domain.getNameDomain() + ".properties";
    }
}
